package TDAArbolBinario;

import TDALista.Position;
/**
 * Interfaz que modela las operaciones aplicables sobre una posición de árbol binario.
 * @author FJoaquin (federico.joaquin@cs.uns.edu.ar)
 * @param <E> Tipo de dato del rótulo de la posición
 */
public interface BTPosition<E> extends Position<E> {
	/**
	 * Obtiene la referencia al padre de la posición.
	 * @return Posición obtenida correspondiente al padre.
	 */
	  public BTPosition<E> getParent();
	  /**
	   * Obtiene la referencia del hijo izquierdo de la posición.
	   * @return Posición obtenida correspondiente al hijo izquierdo.
	   */
	  public BTPosition<E> getLeft();
	  /**
	   * Obtiene la referencia del hijo derecho de la posición.
	   * @return Posición obtenida correspondiente al hijo derecho.
	   */
	  public BTPosition<E> getRight();
	  /**
	   * Obtiene el rótulo de la posición.
	   * @return Rótulo obtenido.
	   */
	  public E element();
	  /**
	   * Establece el nuevo padre de la posición.
	   * @param p Posición del padre a establecer.
	   */
	  public void setParent(BTPosition<E> p);
	  /**
	   * Establece el nuevo hijo izquierdo de la posición.
	   * @param l Posición del hijo izquierdo a establecer.
	   */
	  public void setLeft(BTPosition<E> l);
	  /**
	   * Establece el nuevo hijo derecho de la posición.
	   * @param r Posición del hijo derecho a establecer.
	   */
	  public void setRight(BTPosition<E> r);
	  /**
	   * Establece el nuevo rótulo de la posición.
	   * @param e Nuevo rótulo a establecer.
	   */
	  public void setElement(E e);
}
